#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;



//arrfun.cpp
//const int Max = 5;
//
//int fill_array(double[], int);
//void show_array(const double[], int);
//void revalue(double, double[], int);
//
//int main()
//{
//	double properties[Max];
//
//	int size = fill_array(properties, Max);
//	show_array(properties, size);
//	if (size > 0)
//	{
//		cout << "Enter the revaluation factor: ";
//		double factor;
//		while (!(cin >> factor))
//		{
//			cin.clear();
//			while (cin.get() != '\n')
//				continue;
//			cout << "Input bad; please enter a number:";
//		}
//		revalue(factor, properties, size);
//		show_array(properties, size);
//	}
//	cout << "Done!" << endl;
//	cin.get();
//	cin.get();
//
//	return 0;
//}
//
//int fill_array(double ar[], int limit)
//{
//	double temp;
//	int i = 0;
//	for (i; i < limit; i++)
//	{
//		cout << "Enter value #" << i + 1 << ": ";
//		cin >> temp;
//		if (!cin)
//		{
//			cin.clear();
//			while (cin.get() != '\n')
//				continue;
//			cout << "Input bad; input process terminated." << endl;
//			break;
//		}
//		else if (temp < 0)
//			break;
//		ar[i] = temp;
//	}
//	return i;
//}
//
//void show_array(const double ar[], int n)
//{
//	for (int i = 0; i < n; i++)
//	{
//		cout << "Property #" << i + 1 << ": $";
//		cout << ar[i] << endl;
//	}
//}
//
//void revalue(double r, double ar[], int n)
//{
//	for (int i = 0; i < n; i++)
//		ar[i] *= r;
//}



//strgfun.cpp
//char* buildstr(char, int);
//int main()
//{
//	int times;
//	char ch;
//	cout << "Enter a character: ";
//	cin >> ch;
//	cout << "Enter an integer: ";
//	cin >> times;
//	char* ps = buildstr(ch, times);
//	cout << ps << endl;
//	delete[] ps;
//	ps = buildstr('+', 20);
//	cout << ps << "-Done-" << ps << endl;
//	delete[] ps;
//
//	return 0;
//}
//
//char* buildstr(char c, int n)
//{
//	char* pstr = new char[n + 1];
//	pstr[n] = '\0';
//	while (n-- > 0)
//		pstr[n] = c;
//	return pstr;
//}



//travel.cpp
//
//struct travel_time
//{
//	int hours;
//	int mins;
//};
//
//const int Mins_per_hr = 60;
//
//travel_time sum(travel_time t1, travel_time t2);
//void show_time(travel_time t);
//
//int main()
//{
//	travel_time day1 = { 5,45 };
//	travel_time day2 = { 4,55 };
//
//	travel_time trip = sum(day1, day2);
//	cout << "Tow-day total: ";
//	show_time(trip);
//
//	travel_time day3 = { 4,32 };
//	cout << "Therr-day total: ";
//	show_time(sum(trip, day3));
//
//	return 0;
//}
//
//travel_time sum(travel_time t1, travel_time t2)
//{
//	travel_time total;
//
//	total.hours = t1.hours + t2.hours + (t1.mins + t2.mins) / Mins_per_hr;
//	total.mins = (t1.mins + t2.mins) % 60;
//
//	return total;
//}
//
//void show_time(travel_time t)
//{
//	cout << t.hours << " hours, "
//		<< t.mins << "minutes\n";
//}



//strctfun.cpp
//#include<cmath>
//
//struct polar
//{
//	double distance;
//	double angle;
//};
//struct rect
//{
//	double x;
//	double y;
//};
//
//polar rect_to_polar(rect xypos);
//void show_polar(polar dapos);
//
//int main()
//{
//	rect rplace;
//	polar pplace;
//
//	cout << "Enter the x and y values: ";
//	while (cin >> rplace.x >> rplace.y)
//	{
//		pplace = rect_to_polar(rplace);
//		show_polar(pplace);
//		cout << "Next two numbers(q to quit): ";
//	}
//	cout << "Done.\n";
//
//	return 0;
//}
//
//polar rect_to_polar(rect xypos)
//{
//	polar answer;
//
//	answer.distance = sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
//	answer.angle = atan2(xypos.y, xypos.x);
//	return answer;
//}
//
//void show_polar(polar dapos)
//{
//	const double red_to_deg = 57.29577951;
//
//	cout << "Distance: " << dapos.distance << ", angle: " << dapos.angle * red_to_deg << " degrees\n";
//}



//#include<string>
//const int SIZE = 5;
//void display(const string sa[], int n);
//int main()
//{
//	string list[SIZE];
//	cout << "Enter your " << SIZE << " favorite astronomical sights: " << endl;
//	for (int i = 0; i < SIZE; i++)
//	{
//		cout << i + 1 << ": ";
//		getline(cin, list[i]);
//	}
//
//	cout << "Your list:\n";
//	display(list, SIZE);
//
//	return 0;
//}
//
//void display(const string sa[], int n)
//{
//	for (int i = 0; i < SIZE; i++)
//	{
//		cout << i + 1 << ": " << sa[i] << endl;
//	}
//}



//arrobj.cpp
//#include<array>
//#include<string>
//const int SEASONS = 4;
//const std::array<std::string, SEASONS>Snames = { "Spring","Summer","Fall","Winter" };
//
//void fill(std::array<double, SEASONS>* pa);
//void show(std::array<double, SEASONS> da);
//
//int main()
//{
//	std::array<double, SEASONS>expense;
//	fill(&expense);
//	show(expense);
//	return 0;
//}
//
//void fill(std::array<double, SEASONS>* pa)
//{
//	using namespace std;
//	for (int i = 0; i < SEASONS; i++)
//	{
//		cout << "Enter " << Snames[i] << " expense: ";
//		cin >> (*pa)[i];
//	}
//}
//
//void show(std::array<double, SEASONS>da)
//{
//	using namespace std;
//	double total = 0.0;
//	cout << "\nEXPENSES\n";
//	for (int i = 0; i < SEASONS; i++)
//	{
//		cout << Snames[i] << ": $" << da[i] << endl;
//		total += da[i];
//	}
//	cout << "Total Expenses: $" << total << endl;
//}



//ruler.cpp
//const int Len = 66;
//const int Div = 6;
//void subdivide(char ar[], int low, int high, int level);
//
//int main()
//{
//	char ruler[Len];
//	int i = 0;
//	for (i = 1; i < Len - 2; i++)
//		ruler[i] = ' ';
//	ruler[Len - 1] = '\0';
//	int max = Len - 2;
//	int min = 0;
//	ruler[max] = ruler[min] = '|';
//	std::cout << ruler << std::endl;
//	for (i = 1; i <= Div; i++)
//	{
//		subdivide(ruler, min, max, i);
//		std::cout << ruler << std::endl;
//		for (int j = 1; j < Len - 2; j++)
//			ruler[j] = ' ';
//	}
//
//	return 0;
//}
//
//void subdivide(char ar[], int low, int high, int level)
//{
//	if (!level)
//		return;
//	int mid = (low + high) / 2;
//	ar[mid] = '|';
//	subdivide(ar, low, mid, level - 1);
//	subdivide(ar, mid, high, level - 1);
//}



//fun_ptr.cpp
//#include<iostream>
//double betsy(int);
//double pam(int);
//
//void estimate(int lines, double(*pf)(int));
//
//int main()
//{
//	int code;
//	cout << "How many lines of code do you need?";
//	cin >> code;
//	cout << "Here's betsy estimate:\n";
//	estimate(code, betsy);
//	cout << "Here's pam estimate:\n";
//	estimate(code, pam);
//
//	return 0;
//}
//
//double betsy(int lns)
//{
//	return 0.05 * lns;
//}
//
//double pam(int lns)
//{
//	return 0.03 * lns + 0.0004 * lns * lns;
//}
//
//void estimate(int lines, double (*pf)(int))
//{
//	cout << lines << " lines will take " << (*pf)(lines) << " hour(s)\n";
//}



//arfupt.cpp
//const double* f1(const double ar[], int n);
//const double* f2(const double [], int);
//const double* f3(const double *, int);
//
//typedef const double* (*p_fun)(const double*, int);
//
//int main()
//{
//	double av[3] = { 1112.3, 1542.6, 2227.9 };
//	p_fun p1 = f1;
//	auto p2 = f2;
//	cout << "Using pointers to functions:\n";
//	cout << " Address Value\n";
//	cout << (*p1)(av, 3) << ": " << *(*p1)(av, 3) << endl;
//	cout << p2(av, 3) << ": " << *p2(av, 3) << endl;
//
//	p_fun pa[3] = {f1,f2,f3};
//	auto pb = pa;
//	cout << "\nUsing an array of pointers to functions:\n";
//	cout << " Address Value\n";
//	for (int i = 0; i < 3; i++)
//		cout << pb[i](av, 3) << ": " << *pb[i](av, 3) << endl;
//
//	cout << "\nUsing pointer to an array of pointers:\n";
//	cout << " Address Value\n";
//	auto pc = &pa;
//	cout << (*pc)[0](av, 3) << ": " << *(*pc)[0](av, 3) << endl;
//	p_fun (*pd)[3] = &pa;
//	const double* pdb = (*pd)[1](av, 3);
//	cout << pdb << ": " << *pdb << endl;
//	cout << (*(*pd)[2])(av, 3) << ": " << *(*(*pd)[2])(av, 3) << endl;
//
//	return 0;
//}
//
//const double* f1(const double* ar, int n)
//{
//	return ar;
//}
//const double* f2(const double ar[], int n)
//{
//	return ar + 1;
//}
//const double* f3(const double ar[], int n)
//{
//	return ar + 2;
//}